package com.neuronbit.businessflow.runtime;

import com.neuronbit.businessflow.runtime.lifecycle.FlowLifecycleHook;
import com.neuronbit.businessflow.runtime.lifecycle.StepLifecycleHook;
import com.neuronbit.businessflow.runtime.repo.BusinessFlowRepository;

import java.util.Collection;

/**
 * The interface Step bean provider.
 */
public interface StepBeanProvider {
    /**
     * Gets bean.
     *
     * @param <T>   the type parameter
     * @param clazz the clazz
     * @return the bean
     */
    <T> T getBean(Class<T> clazz);

    Collection<FlowLifecycleHook> getFlowHooks();

    Collection<StepLifecycleHook> getStepHooks();

    BusinessFlowRepository getRepository();
}
